Red Hat Enterprise Linux 8 ベースの EC2 インスタンスで AMI からのリストア時にホスト名を固定してみた
Amazon Linux2 でホスト名を変更した後に AMI を作成してリストアした場合、 cloud-init によってデフォルトのホスト名に上書きされます。
この挙動は Amazon Linux2 に限らず Linux 系のインスタンスに適用されると考えられますが、念のため Red Hat Enterprise Linux 8 でも試してみました。
※ デフォルトのホスト名と言っているのは Amazon EC2 インスタンスのホスト名のタイプ - Amazon Elastic Compute Cloud - で言及されている、ip-xx-xx-xx-xx.ap-northeast-1.compute.internal
といったものです。
やってみた
ベースとなる AMI は RHEL-8.8.0_HVM-20230802-x86_64-64-Hourly2-GP2 を使用しました。
EC2 を作成して SSH 接続してホスト名を確認してみます。
$ hostname ip-10-0-0-70.ap-northeast-1.compute.internal
デフォルトのホスト名が設定されていたので、 hostnamectl コマンドを利用してホスト名を変更します。
$ sudo hostnamectl set-hostname --static masukawa-server
コマンド実行により /etc/hostname
に変更後のホスト名が書きこまれます。
$ cat /etc/hostname masukawa-server
この状態で再起動しても(パブリック IP が変わっても)ホストネームは保持されたままでした。
しかし、この状態で AMI を作成してインスタンスをリストアするとデフォルトのホスト名が改めて設定されます。
$ hostname ip-10-0-0-70.ap-northeast-1.compute.internal
対策は Amazon Linux2 と同様、cloud-init が読み込む /etc/cloud/cloud.cfg
で preserve_hostname を true に変更することになります。(デフォルトは false でした)
sudo vi /etc/cloud/cloud.cfg
上記変更を実施した結果、AMI からリストアしても無事ホスト名が固定されました。
まとめ
Amazon Linux2 と同様の結果になりました。
リストア時にホスト名を固定したい方は参考にしていただけると幸いです。